// 格式化工具函数
import dayjs from 'dayjs'

/**
 * 格式化日期时间
 * @param date 日期字符串或对象
 * @param format 格式化模板，默认 'YYYY-MM-DD HH:mm:ss'
 */
export function formatDateTime(date: string | Date | null | undefined, format = 'YYYY-MM-DD HH:mm:ss'): string {
  if (!date) return '-'
  return dayjs(date).format(format)
}

/**
 * 格式化日期（不含时间）
 */
export function formatDate(date: string | Date | null | undefined): string {
  return formatDateTime(date, 'YYYY-MM-DD')
}

/**
 * 格式化时间（不含日期）
 */
export function formatTime(date: string | Date | null | undefined): string {
  return formatDateTime(date, 'HH:mm:ss')
}

/**
 * 格式化金额
 */
export function formatMoney(amount: number | string | null | undefined): string {
  if (amount === null || amount === undefined) return '¥0.00'
  const num = typeof amount === 'string' ? parseFloat(amount) : amount
  return `¥${num.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ',')}`
}

/**
 * 格式化重量
 */
export function formatWeight(weight: number | null | undefined, unit = '吨'): string {
  if (!weight) return '-'
  return `${weight}${unit}`
}

/**
 * 格式化体积
 */
export function formatVolume(volume: number | null | undefined): string {
  if (!volume) return '-'
  return `${volume}m³`
}

/**
 * 相对时间（多久之前）
 */
export function formatRelativeTime(date: string | Date | null | undefined): string {
  if (!date) return '-'
  
  const now = dayjs()
  const target = dayjs(date)
  const diff = now.diff(target, 'second')
  
  if (diff < 60) return '刚刚'
  if (diff < 3600) return `${Math.floor(diff / 60)}分钟前`
  if (diff < 86400) return `${Math.floor(diff / 3600)}小时前`
  if (diff < 2592000) return `${Math.floor(diff / 86400)}天前`
  
  return formatDateTime(date)
}

